package com.ruoyi.common.core.page;

import java.util.HashMap;
import java.util.Map;

import org.apache.commons.logging.LogFactory;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ruoyi.common.utils.ServletUtils;

/**
 * 表格数据处理
 * 
 * @author ruoyi
 */
public class TableSupport
{
    /**
     * 当前记录起始索引
     */
    public static final String PAGE_NUM = "pageNum";

    /**
     * 每页显示记录数
     */
    public static final String PAGE_SIZE = "pageSize";

    /**
     * 排序列
     */
    public static final String ORDER_BY_COLUMN = "orderByColumn";

    /**
     * 排序的方向 "desc" 或者 "asc".
     */
    public static final String IS_ASC = "isAsc";
    /***
     * 查询参数.
     */
    public static final String parameter = "parameter";

    /**
     * 封装分页对象
     */
    public static PageDomain getPageDomain()
    {
        PageDomain pageDomain = new PageDomain();
        pageDomain.setPageNum(ServletUtils.getParameterToInt(PAGE_NUM));
        pageDomain.setPageSize(ServletUtils.getParameterToInt(PAGE_SIZE));
        pageDomain.setOrderByColumn(ServletUtils.getParameter(ORDER_BY_COLUMN));
        pageDomain.setIsAsc(ServletUtils.getParameter(IS_ASC));
        String parameterStr = ServletUtils.getParameter(parameter);
        if(parameterStr!=null){
        	ObjectMapper objectMapper = new ObjectMapper();
        	try {
				@SuppressWarnings("unchecked")
				Map<String, String> parameterMap = objectMapper.readValue(parameterStr, HashMap.class);
				pageDomain.setParameterMap(parameterMap);
			} catch (JsonProcessingException e) {
				LogFactory.getLog(PageDomain.class).error("parse parameter string error:"+e.getMessage());
				e.printStackTrace();
			}
        }
        return pageDomain;
    }

    public static PageDomain buildPageRequest()
    {
        return getPageDomain();
    }
}
